A number of protocols exist that are designed to facilitate the distribution of data objects (e.g., files, notifications, events, etc.) over a unidirectional network (e.g., IP multicast or broadcast, unicast UDP networks). For simplicity, such networks will be referred to generically in this description as “datacast networks”, and it will be understood that the term refers to the specific networks mentioned as well as similar data distribution networks. For packet-based technologies, the distribution of data objects involves object packetizing at the server (that is, breaking a data object into multiple smaller data packets), transmission over the network and reassembly of the data object from the packets at the client. The data objects are typically transmitted in the context of a logical session that is identified as part of the datacast protocol.
Datacasting algorithms typically take into account a number of constraints or operating conditions. First, there is typically limited bandwidth due to, for example, constraints imposed by the transmission technology or medium as well as by the transmission network operator.
Second, clients attempting to receive the packets may not receive all the packets, may not be continuously listening, or not be listening at the same time as one another. Both of these types of constraints become especially acute for wireless datacasting systems. In particular, wireless broadcast spectrum, and its associated bandwidth, are scarcer than other types of broadcast media. This scarcity often leads to tightly allocated usage of the broadcast spectrum, thus limiting overall bandwidth. Likewise, wireless clients are much less capable of listening in a continuous mode due to coverage problems or power consumption limitations.
One approach suited for file or data object distribution is to implement a datacast “carousel”. As typically implemented, a carousel contains a set of data objects each of which is transmitted in turn one after the other in a cyclical fashion. Objects may be added to or removed from the carousel from time to time, but the carousel repeatedly cycles through the transmission of the objects. With this mode of operation, any client that joins a datacast in progress will acquire all the objects if it listens long enough. For certain simple applications where the set of objects on the carousel do not change often, such as for “offline file delivery” applications, this technique may be adequate to provide a desired level of service.
One approach that that has been tried for improving the operating characteristics of a simple data carousel is to implement a “fast” and a “slow” carousel for file transmission. In this approach, the data objects are divided into two subsets based on a partitioning criterion such as validity time or priority. One subset, typically a relatively small one (one day out of a weekly schedule, for example) is inserted into the “fast” carousel which provides a faster transmission while the rest of the data objects are inserted into a “slow” carousel which provides a slower transmission. One of the disadvantages of this arrangement is that the bandwidth for the carousels is generally pre-allocated based on the amount of data the application anticipates will be in each subset. There is no automatic management of bandwidth or object allocation to carousels, and these parameters change only on occasions where the overall content of the set of carousels is changed.
Bandwidth utilization by the application and system is therefore not necessarily optimal using this approach. Another disadvantage of this arrangement is that the application providing the objects to be datacast may need to directly manage all aspects of this type of carousel, which makes the application more complicated to develop. Yet another disadvantage of this approach is that the corresponding client application may need to either listen to both carousels to get the complete set of data objects or be aware of some characteristic of the two carousels that enables the client application to more efficiently receive the desired objects. Typically, the client application directly manages this aspect of the listening behavior, so that it may require more complicated client application development. A further difficulty of this arrangement is that client applications generally are provided by multiple vendors; thus, making all client applications aware of the characteristics of the two carousels may require some form of coordination or standardization.
It may be desirable that a client application acquire the transmitted data objects in the shortest time; however the acquisition time is inversely related to the available transmission bandwidth. It may also be desirable to lower the processing requirements placed on the client application in order to preserve the battery life on the client device. As recognized by the inventors, existing approaches to the management of datacast services only effectively address certain types of static file or data object delivery sessions. In circumstances where the type and number of such objects changes over time and the available bandwidth is limited, it may be desirable for the object delivery quality of service (DQoS) to be managed more precisely, for example, to optimize the balance between the acquisition time and available transmission bandwidth, while allowing the client application to receive the object with the highest reliability (e.g., high probability) and minimal processing.
A particular bandwidth resource may be utilized by multiple datacast sessions. Some approaches to addressing the problems described above fail to perform effectively when considered from the perspective of the collection of multiple datacast sessions. For example, a change to bandwidth needs and/or desires within one datacast session may require a re-allocation of the bandwidth resource to maintain optimality with respect to various delivery quality of service goals. The multiple datacast sessions may be associated with multiple applications, and the applications may, in effect, compete for the bandwidth resource. Approaches attempting to delegate aspects of multiple datacast session optimization to the application level may be problematic, for example, due to unmanaged competition.
What is desired is a system, apparatus and method for more efficiently managing the distribution of data objects using a datacast system in the situation where the type and number of such objects changes over time, and which overcomes the noted disadvantages of present approaches to solving this problem. Embodiments of the invention are directed toward solving these and other problems individually and collectively.